package org.aeon.gamechatnest.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.aeon.gamechatnest.pojo.PrivateLetter;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Update;

import java.util.List;

/**
 * 针对表【private_letter(私信表)】的数据库操作Mapper
 *
 * @author qik 2024-05-09 09:25:50
 */
@Mapper
public interface PrivateLetterMapper extends BaseMapper<PrivateLetter> {
    /**
     * 创建对话
     *
     * @param privateLetter 私聊对话
     * @return 影响行数
     */
    int add(PrivateLetter privateLetter);

    /**
     * 更改发送用户可见性
     *
     * @param id           私聊对话id
     * @param fromUserShow 发送用户可见性
     * @return 影响行数
     */
    @Update("""
            update private_letter
            set from_user_show = #{fromUserShow}
            where private_id = #{id}
            """)
    int updateFromUserShow(Long id, Integer fromUserShow);

    /**
     * 更改接收用户可见性
     *
     * @param id         私聊对话id
     * @param toUserShow 接收用户可见性
     * @return 影响行数
     */
    @Update("""
            update private_letter
            set to_user_show = #{toUserShow}
            where private_id = #{id}
            """)
    int updateToUserShow(Long id, Integer toUserShow);


    /**
     * 根据用户id获取所有私信id
     *
     * @param userId 用户id
     * @return 私信id列表
     */
    List<Long> getIdsByUserId(@Param("userId") Long userId);

    /**
     * 根据id获取对话
     *
     * @param id 私信对话privateId
     * @return 私信对话
     */
    PrivateLetter getById(Long id);

    /**
     * 根据双方id查询对话
     *
     * @param id1 用户id1
     * @param id2 用户id2
     * @return 私信对话
     */
    PrivateLetter getByBothSides(Long id1, Long id2);

    /**
     * 根据用户id查询对话
     *
     * @param userId
     * @return
     */
    List<PrivateLetter> findByUserId(@Param("userId") Long userId);

}




